﻿//操作成功反馈
function OperateMsg(title, msg) {
    $.messager.show({
        title: title,
        msg: msg,
        showType: "slide",
        style: {
            top: document.body.scrollTop + document.documentElement.scrollTop
        }
    });
}

//获取根目录
function GetRootUrl() {
    var curWwwPath = window.document.location.href;
    var pathName = window.document.location.pathname;
    var pos = curWwwPath.indexOf(pathName);
    var localhostPaht = curWwwPath.substring(0, pos);
    return localhostPaht;
}

//删除最后一个特殊字符  str源字符串 charstr字符，例如:','
function StrTrim(str,charstr) {
    return (str.substring(str.length - 1) ===charstr) ? str.substring(0, str.length - 1) : str;
}

/**
 * 判断指定名称的复选框是否被选中
 *
 * @param {}
 * chname复选框名称
 */
function chkCheckCha(chname) {
    var obj = jQuery("[name='" + chname + "']");
    var isCheck = false;
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].checked == true) {
            isCheck = true;
            break;
        }
    }
    return isCheck;
}

/**
 * 得到指定名称的复选框被选中个数
 *
 * @param {}
 * chname
 * @return {}
 */
function checkChangedOnly(chname) {
    var obj = jQuery("[name='" + chname + "']");
    var count = 0;
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].checked === true) {
            count++;
        }
    }
    return count;
}

/**
 * 得到指定名称的单个被选中的复选择框的值
 *
 * @param {}
 * chname
 */
function getValueCheckOnly(chname) {
    var str = "";
    jQuery("[name='" + chname + "'][checked]").each(function() {
        str += jQuery(this).val();
    });
    return str;
}

/**
 * 得到多个复选框的值
 *
 * @param {}
 * chname
 */
function getCheckVals(chname) {
    var str = "";
    jQuery("[name='" + chname + "'][checked]").each(function() {
        str += jQuery(this).val() + "@";
    });
    return str.substring(0, str.length - 1);
}

function getCheckHidden(chname, tagId) {
    var strval = getCheckVals(chname);
    var arr = "";
    var temp = strval.split("@");
    for (var i = 0; i < temp.length; i++) {
        var val = temp[i];
        var id = tagId + val;
        var tag = $("#" + id).val();
        arr += tag + "@";
    }
    return arr;
}

/**
 * 得到一些复选框的值 复选框的值中是否包含有","若无则用","将多个值组合 若有则先将值用","隔开再用","组合
 *
 * @param {}
 * chname
 */
function getSomeChVals(chname) {
    var str = "";
    jQuery("[name='" + chname + "'][checked]").each(function() {
        var temp = jQuery(this).val();
        if (temp.indexOf(",") == -1) {
            str += temp + ",";
        } else {
            var tempValue = temp.split(",");
            str += tempValue[0] + ",";
        }
    });
    return str.substring(0, str.length - 1);
}

function getAnyCheckValue(chname) {
    var str = getCheckVals(chname);
    var tstr = str.split("@");
    var result = "";
    for (var i = 0; i < tstr.length; i++) {
        var temp = tstr[i].split(",");
        result += temp[0] + ",";
    }
    return result.substring(0, result.length - 1);
}

/**
 * 得到指定名称的有多个值的多个复选框的值
 *
 * @param chname
 */
function getCheckValues(chname) {
    var str = "";
    var sids = "";
    var snames = "";
    jQuery("[name='checkbox'][checked]").each(function() {
        var strval = jQuery(this).val();
        var temp = strval.split(",");
        var sid = temp[0];
        var sname = temp[1];
        sids += sid + ",";
        snames += sname + ", ";
    });
    str = sids.substring(0, sids.length - 1) + "|" + snames.substring(0, snames.length - 2);
    return str;
}

/**
 * 判断复选框的状态
 *
 * @param {}
 * chname
 */
function decideCheckState(chname) {
    var str = getCheckVals(chname);
    var tstr = str.split("@");
    var temp = "";
    for (var i = 0; i < tstr.length; i++) {
        var tval = tstr[i];
        var tem = tval.substring(tval.length - 1, tval.length);
        temp += tem;
    }
    return temp;
}

// 复选框的值是否全为0
function checkStringz(chname) {
    var regex = /^[0]*$/g;
    var source = decideCheckState(chname);
    return regex.test(source);
}

// 复选框的值是否全为1
function checkStringO(chname) {
    var regex = /^[1]*$/g;
    var source = decideCheckState(chname);
    return regex.test(source);
}

function decideStrallz(source) {
    var regex = /^[0]*$/g;
    return regex.test(source);
}

function decideStrallO(source) {
    var regex = /^[1]*$/g;
    return regex.test(source);
}

/**
 * 复选框全选v
 *
 * @param {}
 * chname
 */
function checkboxAll(chname) {
    jQuery("[name='" + chname + "']").each(function() {
        jQuery(this).attr("checked", true);
    });
}

/**
 * 复选框反选
 *
 * @param {}
 * chname
 */
function inverSelect(chname) {
    jQuery("[name='" + chname + "']").each(function() {
        if (jQuery(this).attr("checked")) {
            jQuery(this).attr("checked", false);
        } else {
            jQuery(this).attr("checked", true);
        }
    });
}

function selects(all_id, chname) {
    $("#" + all_id).click(function() {
        if ($(this).attr("checked")) {
            checkboxAll(chname);
        } else {
            clearSelect(chname);
        }
    });
}

function mouseHover(obj) {
    alert($(obj).attr("style"));
}

/**
 * 取消全选或反选
 *
 * @param {}
 * chname
 */
function clearSelect(chname) {
    jQuery("[name='" + chname + "']").each(function() {
        jQuery(this).attr("checked", false);
    });
}

/**
 * 点击删除按钮时使用
 */
function dele(chname) {
    var b = chkCheckCha(chname);
    if (!b) {
        alert("请选择要删除的记录");
        return false;
    } else if (confirm("删除后无法恢复，确定删除吗?")) {
        jQuery("[name='form1']").submit();
    } else {
        return false;
    }
}

/**
 * 校验时间格式
 *
 * @param {}
 *timevale
 * @return {}
 */
function checkTime(timevale) {
    var regex = /^(([0-1][0-9])|([2][0-4]))(\:)[0-5][0-9](\:)[0-5][0-9]$/g;
    var b = regex.test(timevale);
    return b;
}

/**
 * 校验Ip地址格式
 * @param {}
 * ipvale
 */
function checkIp(ipvale) {
    var regex = /^([1-9]|[1-9]\d|1\d{2}|2[0-1]\d|22[0-3])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}$/;
    var b = regex.test(ipvale);
    return b;
}

/**
 * 是否是由字母或数字组成的字符串
 *
 * @param {}
 *letVale
 */
function checkLetOrNum(letVale) {
    var regex = /^([a-zA-Z_]{1})([\w]*)$/g;
    var b = regex.test(letVale);
    return b;
}

/**
 * 取字符串的第index的字符
 *
 * @param {}
 * source
 * @param {}
 * index
 */
function interceptStr(source, index) {
    var temp = source.charAt(index);
    return parseInt(temp);
}

/**
 * 检查字符串中beindex位置到endindex位置之间是否全由targer组成
 *
 * @param {}
 * source
 * @param {}
 * targer
 * @param {}
 * beindex
 * @param {}
 * endindex
 */
function checkStr(source, targer, beindex, endindex) {
    var flag = false;
    for (var i = beindex; i <= endindex; i++) {
        var temp = source.charAt(i);
        if (targer == temp) {
            flag = true;
        }
    }
    return flag;
}

/**
 * 验证字符串中的某一段是否全为0
 *
 * @param {}
 * source
 * @param {}
 * begin
 * @param {}
 * end
 * @return {}
 */
function checkString(source, begin, end) {
    var regex = /^[0]*$/g;
    var temp = source.substring(begin, end + 1);
    //alert("###temp=="+temp);
    return regex.test(temp);
}

/**
 * 判断两个字符串是否想等 相等返回true否则返回false
 *
 * @param {}
 * source
 * @param {}
 * target
 */
function decideString(source, target) {
    return (source == target) ? true : false;
}

/**
 * 将字符串转换成数字
 * @param val
 * @return
 */
function stringToNumber(val) {
    return Number(val);
}

/**
 * 验证是否是整数或小数
 * @param source
 * @return
 */
function checkIntAndFloat(source) {
    var regex = /^[0-9]+(\.[0-9]+)?$/g;
    return regex.test(source);
}

/**
 * 验证是否是整数或只有一位小数点的小数
 *
 * @param {}
 * source
 * @return {}
 */
function checkFloat(source) {
    // var regex=/^[1-9]d*.d{1}|0.d{1}[1-9]d{1}$/g;
    var regex = /^[0-9]+\d*[\.\d]?\d{0,1}$/g;
    return regex.test(source);
}

/**
 * 验证是否两位数以内的正整数
 *
 * @param {}
 * source
 * @return {}
 */
function checkTwoInt(source) {
    var regex = /^[1-9][0-9]?$/g; //两位数以内的正整数
    return regex.test(source);
}

/**
 * 验证数字
 *
 * @param {}
 * source
 * @return {}
 */
function checkNumber(source) {
    var regex = /^(\-|\+)?\d+(\.\d+)?$/;
    return regex.test(source);
}

/**
 * 验证是否是两位小数的正实数
 *
 * @param {}
 * source
 * @return {}
 */
function checkTowLenFloat(source) {
    var regex = /^[0-9]+(.[0-9]{2})?$/g; //只能输入有两位小数的正实数
    return regex.test(source);
}

/**
 * 验证是否是两位或一位小数的正实数
 *
 * @param {}
 * source
 * @return {}
 */
function checkTowLenFloatt(source) {
    var regex = /^[0-9]+(.[0-9]{1,2})?$/g; //只能输入有两位小数的正实数
    return regex.test(source);
}

/**
 * 验证是否是整数或只有2位小数的数
 *
 * @param {}
 * source
 */
function checkTowFloat(source) {
    var regex = /^[1-9]+\d*[\.\d]?\d{0,2}$/g;
    return regex.test(source);
}

/**
 * 验证是否有空格
 *
 * @param {}
 * source
 */
function checkSpace(source) {
    var regex = /\s/g;
    return regex.test(source);
}

/**
 * 检查一个数是否是整数则位数在8以内
 *
 * @param {}
 * source
 */
function checkIntLeng(source) {
    var regex = /^[1-9]{1}[0-9]{1,7}$/g;
    return regex.test(source);
}

/**
 * 检查一个数是否是整数则位数在2以内
 *
 * @param {}
 * source
 */
function checkIntTwoLeng(source) {
    var regex = /^[1-9]{1}[0-9]{1,2}$/g;
    return regex.test(source);
}

/**
 * 验证正整数  
 * @param {}
 * source
 */
function checkInt(source) {
    // var regex=/^[1-9]d*$/g
    var regex = /^[0-9]*[1-9][0-9]*$/g;
    return regex.test(source);
}

/**
 * 验证非负数 
 * @param {}
 * source
 */
function checkNegative(source) {
    var regex = /^[1-9]\d*|0$/g;
    return regex.test(source);
}

/**
 * 分割IP地址
 *
 * @param {}
 * ipAddress
 */
function getIpNum(ipAddress) {
    var ip = ipAddress.split(".");
    var a = parseInt(ip[0]);
    var b = parseInt(ip[1]);
    var c = parseInt(ip[2]);
    var d = parseInt(ip[3]);
    var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
    return ipNum;
}

/**
 * 判断IP大小
 */
function decideIp(startIp, endIp) {
    var ip1 = getIpNum(startIp);
    var ip2 = getIpNum(endIp);
    return (ip2 > ip1) ? true : false;
}

/**
 * 验证是否全是空格
 *
 * @param {}
 * source
 * @return {}
 */
function checkAllSpace(source) {
    var regex = /^\s+$/g;
    return regex.test(source);
}

/*******************************************************************************
 * openWindow(url)函数：弹出窗口 * url：路径 * left:左边的距离 * top：上边的距离 * width：窗口宽度 *
 * height：窗口高度 * resize：yes时可调整窗口大小，no则不可调 *
 ******************************************************************************/
function openWindow(url, width, height, resize) {
    var mleft = (screen.width - width) / 2;
    var mtop = (screen.height - height) / 2;
    window.open(url,
        "",
        "height=" +
        height +
        ",width=" +
        width +
        ",location=no,menubar=no,resizable=" +
        resize +
        ",scrollbars=yes,status=no,toolbar=no,left=" +
        mleft +
        ",top=" +
        mtop +
        "");
}

function openWindow(url, width, height, resize, scrollbars) {
    var mleft = (screen.width - width) / 2;
    var mtop = (screen.height - height) / 2;
    window.open(url,
        "",
        "height=" +
        height +
        ",width=" +
        width +
        ",location=no,menubar=no,resizable=" +
        resize +
        ",scrollbars=" +
        scrollbars +
        ",status=no,toolbar=no,left=" +
        mleft +
        ",top=" +
        mtop +
        "");
}

/**
 *
 * @param {} url
 * @param {} width
 * @param {} height
 */
function showNewWind(url, width, height) {
    //alert(url);
    var showresult = window.showModalDialog(url,
        window,
        "dialogWidth=" + width + "px;dialogHeight=" + height + "px;location=no;status=no;scroll=yes");
    return showresult;
}

/**
 *
 * @param {} url
 * @param {} width
 * @param {} height
 */
function showNewLessWind(url, width, height) {
    //alert(url);
    var showresult = window.showModelessDialog(url,
        window,
        "dialogWidth:" + width + "px;location=no;status:no;dialogHeight:" + height + "px");
    return showresult;
}

function decideLeve(source) {
    var regex = /^[a-zA-Z]{1}$/g;
    return regex.test(source);
}

function openBlankWindow(url) {
    openWindow(url, "650", "400", "yes");
}

/**
 * 时间变化
 * @param {} source
 * @param {} addval
 */
function dateToString(source, addval) {
    var paddval = parseInt(addval); //增量(秒)
    var temp = source.split(":");
    var thrs = parseInt(temp[0]) * 3600; //小时化成秒
    var tmis = parseInt(temp[1]) * 60; //分钟化成秒;
    var tss = parseInt(temp[2]); //秒
    var totals = parseInt(thrs) + parseInt(tmis) + parseInt(tss) + parseInt(paddval);
    var result = timeTohhmmss(totals);
    return result;
}

/**
 * 由秒数转化成hh:mm:ss格式
 * @param {} seconds
 */
function timeTohhmmss(seconds) {
    var hh;
    var mm;
    var ss;
    if (seconds == null || seconds < 0) {
        return;
    }
    var pseconds = parseInt(seconds);
    //得到小时
    hh = pseconds / 3600 | 0;
    pseconds = parseInt(pseconds) - parseInt(hh) * 3600;
    if (parseInt(hh) < 10) {
        hh = "0" + hh;
    }
    if (parseInt(hh) >= 24) {
        hh = "00";
    }
    //得到分钟
    mm = parseInt(pseconds) / 60 | 0;
    //得到秒
    ss = parseInt(pseconds) - parseInt(mm) * 60;
    if (parseInt(mm) < 10) {
        mm = "0" + mm;
    }
    if (parseInt(ss) < 10) {
        ss = "0" + ss;
    }
    return hh + ":" + mm + ":" + ss;
}

/**
 验证身份证号是否正确
 **/
function isCardNo(num) {
    if (isNaN(num)) {
        alert("输入的身份证号不是数字！");
        return false;
    }
    var len = num.length;
    if (len < 15 || len > 18) {
        alert("输入的身份证号码长度不正确定！应为15位或18位");
        return false;
    }
    var re15 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
    var re18 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
    var res = (re15.test(num) || re18.test(num));
    if (res == false) {
        alert("输入的身份证号格式不正确！");
        return false;
    }
    return res;
}

/**
 * 判断字符串是否为空，若为空则返回true否则返回false
 * @param source
 * @return true或者false
 **/
function isEmpty(source) {
    var str = source.replace(/(^\s*)|(\s*$)/g, "");
    if (str == "" || str.toLowerCase() == "null" || str.length <= 0) {
        return true;
    } else {
        return false;
    }
}

/**
 * 验证是否为电话号码（座机）
 *
 * @param {}
 *            source
 */

function isTelephone(source) {
    var regex = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
    return regex.test(source); //search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1
}

/**
 * 验证是否为手机号码（移动手机）
 *
 * @param {}
 *            source
 */

function isMobilePhone(source) {
    var regex = /^((\(\d{3}\))|(\d{3}\-))?1\d{10}/;
    return regex.test(source);
}

/**
 * 验证是否为电子邮箱
 *
 * @param {}
 *            source
 */
function isEmail(source) {
    var regex = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    if (source.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
        return true;
    } else {
        alert("电子邮箱格式不正确");
        return false;
    }
}

/**
 *
 *验证是否为邮编
 * @param
 *      source
 */
function isZip(source) {
    var regex = /^[1-9]\d{5}$/;
    return regex.test(source);
}

/**
 *
 *验证字符串是否是中文
 *
 **/
function isChines(source) {
    var regex = /^[\u4E00-\u9FA5]+$/;
    return regex.test(source);
}

/**
 生成指定位数的随机整数
 **/
function getRandomNum(count) {
    var arr = new Array;
    var reNum = "";
    for (var i = 0; i < count; i++) {
        arr[i] = parseInt(Math.random() * 10);
        reNum += String(arr[i]);
    }
    return reNum;
}

function random(min, max) {
    return Math.floor(min + Math.random() * (max - min));
}
/*
 *判断包含关系
 *string:原始字符串
 *substr:子字符串
 *isIgnoreCase:忽略大小写
 */


function jsContains(string, substr, isIgnoreCase) {
    if (isIgnoreCase) {
        string = string.toLowerCase();
        substr = substr.toLowerCase();
    }
    var startChar = substr.substring(0, 1);
    var strLen = substr.length;
    for (var j = 0; j < string.length - strLen + 1; j++) {
        if (string.charAt(j) == startChar) //如果匹配起始字符,开始查找
        {
            if (string.substring(j, j + strLen) == substr) //如果从j开始的字符与str匹配，那ok
            {
                return true;
            }
        }
    }
    return false;
}

/**
 * 随机数UUID
 * @return
 */
function makeUUID() {
    var S4 = function() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    //return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
    return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());
}

/**
 * 得到项目的基地址
 * @return {}
 */
function getContextPath() {
    var strFullPath = window.document.location.href;
    var strPath = window.document.location.pathname;
    var pos = strFullPath.indexOf(strPath);
    var prePath = strFullPath.substring(0, pos);
    var path = strPath.substring(0, strPath.substr(1).indexOf("/") + 1);
    return path;
}

/**
 * 给URL追加参数
 * @param {} url
 * @param {} parameter 参数名
 * @param {} value  参数值
 */
function urlAddParmert(url, parameter, value) {
    var buf = new StringBuffer();
    if (!isEmpty(url)) {
        buf.append(url);
        if (url.indexOf("?") > -1) { //已经有参数
            buf.append("&");
        } else {
            buf.append("?");
        }
        buf.append(parameter);
        buf.append("=");
        buf.append(value);
    }
    return buf.toString();
}

/**
 * 得到文件的扩展名
 * @param {} filename
 */
function getFileExt(filename) {
    var d = /\.[^\.]+$/.exec(filename);
    var ext = new String(d);
    var s = ext.toLowerCase();
    return s;
}


//字符串编码
function strEncode(source) {
    return encodeURIComponent(source);
}

//字符串解码
function strDencode(source) {
    return decodeURIComponent(source);
}

/**
 * 字符串转正形
 * @param source
 * @returns
 */
function strParseInt(source) {
    if (isEmpty(source) || isNaN(source)) {
        return 0;
    }
    return parseInt(source);
}

/**
 * 字符串转Float形
 * @param source
 * @returns
 */
function strParseFloat(source) {
    if (isEmpty(source) || isNaN(source)) {
        return 0;
    }
    return parseFloat(source);
}

/**       
 * 对Date的扩展，将 Date 转化为指定格式的String       
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符       
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)       
 * eg:       
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423       
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04       
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04       
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04       
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18       
 */

Date.prototype.format = function(fmt) {
    var o = {
        "M+": this.getMonth() + 1, //月份           
        "d+": this.getDate(), //日           
        "h+": this.getHours() % 12 === 0 ? 12 : this.getHours() % 12, //小时           
        "H+": this.getHours(), //小时           
        "m+": this.getMinutes(), //分           
        "s+": this.getSeconds(), //秒           
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度           
        "S": this.getMilliseconds() //毫秒           
    };
    var week = {
        "0": "/u65e5",
        "1": "/u4e00",
        "2": "/u4e8c",
        "3": "/u4e09",
        "4": "/u56db",
        "5": "/u4e94",
        "6": "/u516d"
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1,
            ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") +
            week[this.getDay() + ""]);
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
};